package com.tbit.uqbike.webmanager.req.tag.bind.add;

import com.tbit.uqbike.enums.CancelType;
import com.tbit.uqbike.enums.TagOperationType;
import com.tbit.uqbike.object.business.UserInfo;
import com.tbit.uqbike.webmanager.dto.TagBindDTO;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Set;

/**
 * 通过设备ID MachineId 添加标签 请求
 *
 *
 * @author <a href="mailto:chen.chaoxiong@tbit.com.cn">ChenChaoXiong</a>
 * @since 2024/7/12
 */
@Data
public class MachineIdBatchTagReq {

        /**
        * 品牌ID
        */
        @NotNull
        private Integer brandId;

        /**
        * 区域ID
        */
        @NotNull
        private Integer accountId;

        /**
        * 标签ID集合
        */
        @NotEmpty
        private Set<Long> tagIds;

        /**
        * 设备ID集合
        */
        @NotEmpty
        private Set<Integer> machineIds;


        public TagBindDTO toTagBindDTO(UserInfo userInfo) {
            TagBindDTO tagBindDTO = new TagBindDTO();
            tagBindDTO.setBrandId(brandId);
            tagBindDTO.setAccountId(accountId);
            tagBindDTO.setTagIds(tagIds);
            tagBindDTO.setMachineIds(machineIds);
            tagBindDTO.setUserInfo(userInfo);
            tagBindDTO.setMachineInfoType(TagOperationType.ADD_BY_MACHINE_ID.getOperationInfo());
            return tagBindDTO;
        }

        public TagBindDTO toCancelTagBindDTO(UserInfo userInfo) {
            TagBindDTO tagBindDTO = new TagBindDTO();
            tagBindDTO.setBrandId(brandId);
            tagBindDTO.setTagIds(tagIds);
            tagBindDTO.setAccountId(accountId);
            tagBindDTO.setMachineIds(machineIds);
            tagBindDTO.setUserInfo(userInfo);
            tagBindDTO.setCancelType(CancelType.MANUAL);
            tagBindDTO.setMachineInfoType(TagOperationType.CANCEL_BY_MACHINE_ID.getOperationInfo());
            return tagBindDTO;
        }
}
